package com.cskaoyan.day2.collection;

import java.util.ArrayList;
import java.util.Collection;

/**
 * @author Common-zhou
 * @since 2023-02-28 09:48
 */
public class CollectionDemo2 {
    public static void main(String[] args) {
        //    ---------------------------------增删改查方法---------------------------------


        //testAdd();

        //testAddAll();

        //testRemove();

        //testRemove1();

        //testRemove2();

        //testRemoveAll();

        //testRemoveAll2();

        //testRemoveAll3();

        //testContains();

        //testContainsAll();
        //
        //testRetainAll();


    }

    private static void testRetainAll() {
        //    boolean retainAll(Collection<?> c)： 将原有collection只保留传入的collection。
        Collection<String> collection = new ArrayList<>();
        collection.add("zs");
        collection.add("ls");
        collection.add("wu");


        Collection<String> collection1 = new ArrayList<>();
        collection1.add("zs");
        collection1.add("ls");
        collection1.add("zl");

        // 求交集  删除的是原有集合。
        collection.retainAll(collection1);

        System.out.println(collection);
        System.out.println(collection1);


    }

    private static void testContainsAll() {
        //    boolean containsAll(Collection<?> c)： 判断给定的collection中是否全部存在于目标Collection

        // 是否是子集

        Collection<Integer> collection = new ArrayList<>();
        collection.add(10);
        collection.add(8);
        collection.add(7);

        Collection<Integer> collection1 = new ArrayList<>();
        collection1.add(10);
        collection1.add(8);

        // collection 是否包含 collection1
        boolean containsAll = collection.containsAll(collection1);
        System.out.println(containsAll);

        // collection1 是否包含 collection
        boolean containsAll1 = collection1.containsAll(collection);
        System.out.println(containsAll1);

    }

    private static void testContains() {
        //    boolean contains(Object o)： 判断是否存在指定元素
        Collection<String> collection = new ArrayList<>();

        collection.add("李云龙");
        collection.add("楚云飞");
        collection.add("和尚");
        collection.add("秀芹");
        //collection.add("魏大勇");

        // 原有集合 包含 李云龙
        boolean contains = collection.contains("李云龙");
        System.out.println(contains);

        boolean contains1 = collection.contains("魏大勇");
        System.out.println(contains1);

    }

    private static void testRemoveAll3() {
        //    boolean removeAll(Collection<?> c)： 删除Collection中的所有存在的元素,会全部删除，如果存在多个
        Collection<Integer> collection = new ArrayList<>();

        collection.add(1);
        collection.add(6);
        collection.add(8);
        collection.add(6);
        collection.add(9);
        collection.add(6);
        // 1   6   8   6  9  6
        System.out.println(collection);

        //// 调用remove  只会删除第一次出现的
        //collection.remove(6);
        //System.out.println(collection);

        Collection<Integer> needRemovedCollection = new ArrayList<>();
        needRemovedCollection.add(6);

        // [1, 6, 8, 6, 9, 6]
        collection.removeAll(needRemovedCollection);
        System.out.println(collection);
        // [1, 8, 9]


    }

    private static void testRemoveAll2() {
        //    boolean removeAll(Collection<?> c)： 删除Collection中的所有存在的元素,会全部删除，如果存在多个
        Collection<String> collection = new ArrayList<>();

        collection.add("李云龙");
        collection.add("楚云飞");
        collection.add("和尚");
        collection.add("秀芹");

        Collection<String> needRemovedCollection = new ArrayList<>();
        needRemovedCollection.add("秀芹");
        needRemovedCollection.add("和尚");

        // 需要删除 needRemovedCollection
        collection.removeAll(needRemovedCollection);

        System.out.println(collection);


    }

    private static void testRemoveAll() {
        //    boolean removeAll(Collection<?> c)： 删除Collection中的所有存在的元素,会全部删除，如果存在多个
        Collection<String> collection = new ArrayList<>();

        collection.add("李云龙");
        collection.add("楚云飞");
        collection.add("和尚");
        collection.add("秀芹");


        Collection<String> collection1 = new ArrayList<>();
        collection1.add("秀芹");

        // collection 会删除元素。删除的collection1里面存在的元素
        collection.removeAll(collection1);

        System.out.println(collection);
        System.out.println(collection1);
    }

    private static void testRemove2() {
        //    boolean remove(Object o)： 删除元素， 只删除第一个出现的(如果存在多个)

        Collection<Integer> collection = new ArrayList<>();
        collection.add(1);
        collection.add(10);
        collection.add(7);
        collection.add(8);

        // 如果删除不存在的元素。不会报错
        boolean remove = collection.remove(9);
        System.out.println(collection);

        // 如果删除成功，返回true
        System.out.println(remove);

    }

    private static void testRemove1() {
        //    boolean remove(Object o)： 删除元素， 只删除第一个出现的(如果存在多个)

        Collection<Integer> collection = new ArrayList<>();
        collection.add(1);
        collection.add(10);
        collection.add(7);
        collection.add(8);
        collection.add(7);
        collection.add(6);
        collection.add(7);
        //   1     10    7    8   7   6    7
        System.out.println(collection);
        collection.remove(7);
        System.out.println(collection);
        collection.remove(7);
        System.out.println(collection);


    }

    private static void testRemove() {
        //    boolean remove(Object o)： 删除元素， 只删除第一个出现的(如果存在多个)

        Collection<Integer> collection = new ArrayList<>();
        collection.add(1);
        collection.add(10);
        collection.add(7);
        collection.add(8);
        collection.add(6);

        System.out.println(collection);
        collection.remove(7);
        System.out.println(collection);


    }

    private static void testAddAll() {
        //    boolean addAll(Collection<? extends E> c): 添加一个Collection进目标Collection
        Collection<String> collection = new ArrayList<>();
        collection.add("chatgpt");
        collection.add("b站");
        collection.add("百度");

        Collection<String> collection1 = new ArrayList<>();
        // collection往 collection1添加
        // 谁调用的方法  你就往谁添加
        collection1.addAll(collection);
        collection1.add("头条");


        System.out.println(collection1);


    }

    private static void testAdd() {
        //    boolean add(E e): 添加一个元素进入Collection

        Collection<String> collection = new ArrayList<>();

        collection.add("zs");
        collection.add("b站");
        collection.add("百度");
        collection.add("chatgpt");

        System.out.println(collection);

    }
}
